package com.thx.information.action;

import com.thx.common.struts2.CurdAction;
import com.thx.common.util.ThreadLocalContext;
import com.thx.common.web.ActionResult;
import com.thx.information.model.InfoColumn;
import com.thx.information.model.InfoVoteItem;
import com.thx.information.model.Information;
import com.thx.information.model.InformationExt;
import com.thx.information.service.ColumnService;
import com.thx.information.service.InfoVoteItemService;
import com.thx.information.service.InfoVoteLogService;
import com.thx.information.service.InfomationService;
import com.thx.information.service.InformationExtService;
import com.thx.information.view.InformationView;
import com.thx.log.LogUtil;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@ParentPackage(value = "gloab-package")
@Namespace(value = "/information")
@Action(value = "information",
    results = {@Result(name = "list", location = "/pages/information/information/list.jsp"),
        @Result(name = "input", location = "/pages/information/information/input.jsp"),
        @Result(name = "view", location = "/pages/information/information/detail.jsp"),
        @Result(name = "json", type = "json", params = {"root", "result"})},
    interceptorRefs = {@InterceptorRef(value = "topDtStack"),
        @InterceptorRef(value = "pageInterceptor", params = {"includeMethods", "list"}),
        @InterceptorRef(value = "pageInterceptor", params = {"includeMethods", "view"}),})
@Controller
@Scope("prototype")
public class InformationAction extends CurdAction<Information> {

  private static final long serialVersionUID = 1L;
  private static final Logger logger = LoggerFactory.getLogger(InformationAction.class);

  @Autowired
  private InfomationService service;

  @Autowired
  private ColumnService columnService;

  @Autowired
  private InfoVoteItemService infoVoteItemService;
  
  @Autowired
  private InfoVoteLogService infoVoteLogService;
  
  @Autowired
  private InformationExtService informationExtService;

  private String ids;
  private String treeNodes;
  private String pid;
  private String searchName;
  private String ifSee; // 是否公开栏目
  private InfoVoteItem vote;


  // 搜索条件
  private Long columnId;
  private Long infoId;
  private String infoType;
  private String infoTitle;
  private String issueStatus;
  private String readStatus;
  private List<InformationView> viewList; // 信息视图列表

  // 新增、编辑需要的字典数据
  private List<InfoColumn> dicInfoColumns; // 所有分类列表
  private InfoColumn belongInfoColumn; // 信息所属分类对象
  protected String[] dicvTexts;
  protected String[] dicValues;
  protected String[] dicvIds;


  // 查看信息详情
  private InformationView view; // 信息视图对象
  private Boolean perIfVote; // 人员是否已经参与过投票

  // 测试数据
  private Long enterpriseId = 181L;
  private Long personnelId = 1048L;
  private String personnelName = "管理员";
  private Long depId = 1L;
  private Long role = 1L;
  private Boolean ifAdmin = true;


  // @Autowired
  // private InfoVoteLogService infoVoteLogService;
  // @Autowired
  // private ColumnService columnService;
  // @Autowired
  // private InfoVoteItemService infoVoteItemService;
  // @Autowired
  // private InformationExtService informationExtService;
  // @Autowired
  // private AttachmentService attachmentService;
  // @Autowired
  // private CommonAnnexService commonAnnexService;
  // @Autowired
  // private PersonnelModuleAuthorityService personnelModuleAuthorityService;// 模块数据权限

  // private String stringIds;
  // private List<InfoColumn> rs;
  // private InfoVoteItem vote;
  // private InfomationVoteCommentLogView iview;
  // private String voteedit;// 编辑投票用
  // private List<InfoVoteItem> votes;
  // private String[] voteIds;// 修改投票id
  // private String voteitemids;// 删除投票选项ids
  // private String ifvote;// 是否已投票
  // private List<VoteItemLogView> vLview;// 投票管理
  // private Long voteNumber;// 投票总数
  // private Long everyVote;// 每一项的投票百分比
  // private String iscommon;
  // private String json;
  // private String commentSucces;// 评论成功
  // private String informationmanager;// no为信息发布
  // private String platformInfoId;
  // // fengjinshou 20140722用于通过公文发布信息时动态获取公文正文的高度
  // private String iframeHeight;
  // private String docWorkId;
  // private Map<String, PersonnelModuleAuthority> authorityMap;// 授权数据集合zhangyong20141111
  // private String mainUploadPath = AppContext.getProperties("mainUploadPath");


  protected void doList() {
    ThreadLocalContext.set("personnelId", personnelId);
    ThreadLocalContext.set("deptId", "801");
    ThreadLocalContext.set("postId", "0");
    logger.debug("<进入>:doList方法  显示信息");
    logger.info(
        "<入参>:enterpriseId={},personnelId={},columnId={},infoId={},infoType={},infoTitle={},issueStatus={},readStatus={}",
        enterpriseId, personnelId, columnId, infoId, infoType, infoTitle, issueStatus, readStatus);
    try {
      viewList = service.findEnterpriseAndCommon(enterpriseId, personnelId, columnId, infoId,
          infoType, infoTitle, issueStatus, readStatus);
      logger.debug("<出参>查询结果{}：", viewList);
    } catch (Exception e) {
      logger.error("<错误>:查询异常");
    }
  }

  protected void doView() {
    try {
      logger.debug("<进入>信息详情查询");
      logger.debug("<入参>查询参数id:{}", id);
      if (StringUtils.isNotBlank(id)) {
        entity = service.get(Long.parseLong(id));
        view = service.findViewByInfoId(NumberUtils.toLong(id));
        Long tcolumnId = entity.getColumnId();
        if (tcolumnId != null && tcolumnId.longValue() != 0) {
          belongInfoColumn = columnService.get(tcolumnId);
        }
        
        //查询人员是否已经参与过投票
        perIfVote = infoVoteLogService.queryByPId(personnelId, view.getInformation().getInfoId())>0 ? true : false;
        
        // 保存浏览数量
        InformationExt informationExt = new InformationExt();
        informationExt.setInfoId(Long.parseLong(id));
        informationExt.setPersonnelId(personnelId);
        informationExt.setPersonnelName(personnelName);
        informationExt.setLookTime(new Date());
        informationExtService.save(informationExt);
      } else {
        logger.info("无法获取id");
      }
      logger.debug("<出参>查询结果{}：", entity);
    } catch (Exception e) {
      logger.error("<错误>信息详情查询异常{}", e);
    }
  }

  /**
   * 新增、修改显示页面.
   * 
   */
  public String input() {
    logger.debug("<进入>:分类修改/新增跳转方法");
    logger.info("<入参>:id={},columnId={}", id, columnId);
    try {

      if (StringUtils.isNotBlank(id)) {
        entity = service.get(Long.parseLong(id));
        view = service.findViewByInfoId(NumberUtils.toLong(id));
        belongInfoColumn = columnService.get(entity.getColumnId());
        columnId = entity.getColumnId();
        logger.info("<出参>entity{},belongInfoColumn{},columnId{}：", entity, belongInfoColumn,
            columnId);
      } else {
        // 初始化分类字典数据
        if (columnId != null && columnId.longValue() != 0) {
          belongInfoColumn = columnService.get(columnId);
          logger.info("<出参>belongInfoColumn{}：", belongInfoColumn);
        } else {
          dicInfoColumns = columnService.queryAll(enterpriseId);
          logger.info("<出参>dicInfoColumns{}：", dicInfoColumns);
        }
      }
      logger.debug("<出参>查询结果{}：", entity);
    } catch (Exception e) {
      logger.error("<错误>:查询异常");
    }
    return "input";
  }

  /**
   * 新增修改方法.
   */
  public void doSave() {
    try {
      if (StringUtils.isBlank(id)) {
        logger.debug("<进入>:信息管理新增方法");
        logger.info("<入参>:新增数据={}", entity);

        // 信息基本信息
        Information entityd = new Information();
        BeanUtils.copyProperties(entity, entityd);
        entityd.setIssueStatus("0");
        entityd.setCreateUser(personnelName);
        entityd.setEnterpriseId(enterpriseId);
        entityd.setCreateUserId(personnelId);
        entityd.setCreateTime(new Date());

        // 组装投票条目列表
        List<InfoVoteItem> votemItems = new ArrayList();
        if (dicvIds != null && dicvTexts != null) {
          logger.info("条目入参:{}-{}", dicvIds, dicvTexts);
          for (int i = 0; i < dicvIds.length; i++) {
            if (StringUtils.isBlank(dicvIds[i]) && StringUtils.isNotBlank(dicvTexts[i])) {
              InfoVoteItem item = new InfoVoteItem();
              item.setOptionName(StringUtils.strip(dicvTexts[i]));
              votemItems.add(item);
              logger.info("条目:{}", item);
            } else if (StringUtils.isNotBlank(dicvIds[i]) && StringUtils.isNotBlank(dicvTexts[i])) {
              InfoVoteItem item = infoVoteItemService.get(NumberUtils.toLong(dicvIds[i]));
              item.setOptionName(StringUtils.strip(dicvTexts[i]));
              votemItems.add(item);
              logger.info("条目:{}", item);
            }
          }
        }

        service.saveInformationAndVoteItems(entityd, votemItems);
        setResult(SUCCESS, "新增成功！");
        LogUtil.log("信息管理", LogUtil.ACTION_UPDATE, LogUtil.RESULT_SUCCESS, "新增信息");
      } else {
        logger.debug("<进入>:信息管理修改方法");
        logger.info("<入参>:修改信息id={}", entity);
        Information entityd = service.get(Long.parseLong(id));

        BeanUtils.copyProperties(entity, entityd,
            new String[] {"infoId", "columnId", "enterpriseId", "createUserId", "createUser",
                "createTime", "updateUser", "updateTime"});

        entityd.setUpdateTime(new Date());
        entityd.setUpdateUser("" + personnelId);

        // 组装投票条目列表
        List<InfoVoteItem> votemItems = new ArrayList();
        if (dicvIds != null && dicvTexts != null) {
          logger.info("条目入参:{}-{}", dicvIds, dicvTexts);
          for (int i = 0; i < dicvIds.length; i++) {
            if (StringUtils.isBlank(dicvIds[i]) && StringUtils.isNotBlank(dicvTexts[i])) {
              InfoVoteItem item = new InfoVoteItem();
              item.setOptionName(StringUtils.strip(dicvTexts[i]));
              votemItems.add(item);
              logger.info("条目:{}", item);
            } else if (StringUtils.isNotBlank(dicvIds[i]) && StringUtils.isNotBlank(dicvTexts[i])) {
              InfoVoteItem item = infoVoteItemService.get(NumberUtils.toLong(dicvIds[i]));
              item.setOptionName(StringUtils.strip(dicvTexts[i]));
              votemItems.add(item);
              logger.info("条目:{}", item);
            }
          }
        }
        service.saveInformationAndVoteItems(entityd, votemItems);
        setResult(SUCCESS, "修改成功！");
        LogUtil.log("信息管理", LogUtil.ACTION_UPDATE, LogUtil.RESULT_SUCCESS, "修改信息");
      }
    } catch (Exception e) {
      if (StringUtils.isNotBlank(id)) {
        LogUtil.log("信息管理", LogUtil.ACTION_UPDATE, LogUtil.RESULT_FAIL, "修改信息");
        logger.error("<错误>:修改异常{}", e);
      } else {
        LogUtil.log("信息管理", LogUtil.ACTION_UPDATE, LogUtil.RESULT_FAIL, "新增信息");
        logger.error("<错误>:新增异常{}", e);
      }
    }
  }


  protected void doDelete() {
    logger.debug("<进入>:删除信息方法");
    try {
      if (StringUtils.isNotBlank(id)) {
        logger.debug("<入参>:信息数据id={}", id);
        service.delete(NumberUtils.toLong(id));
        setResult(ActionResult.SUCCESS, "删除成功！");
        LogUtil.log("信息管理", LogUtil.ACTION_DELETE, LogUtil.RESULT_SUCCESS, "删除栏目信息");
      } else {
        setResult(ActionResult.FAIL, "服务器异常！");
      }
    } catch (Exception e) {
      logger.error("<错误>:删除异常{}", e);
      setResult(ActionResult.FAIL, "服务器异常！");
    }
  }

  /**
   * 批量删除信息.
   */
  protected void doDelMulti() {
    logger.debug("<进入>:批量删除信息方法");
    try {
      if (ids != null && ids.split(",").length > 0) {
        logger.debug("<入参>:批量删除信息id={}", ids);
        for (String del : ids.split(",")) {
          service.delete(NumberUtils.toLong(del));
        }
        setResult(ActionResult.SUCCESS, "批量删除成功！");
        LogUtil.log("信息管理", LogUtil.ACTION_DELETE, LogUtil.RESULT_SUCCESS, "批量删除信息");
      } else {
        setResult(ActionResult.FAIL, "服务器异常！");
      }
    } catch (Exception e) {
      logger.error("<错误>:批量删除异常{}", e);
      setResult(ActionResult.FAIL, "服务器异常！");
    }
  }


  //
  // @Override
  // public void doList1() {
  // logger.debug("<进入>:doList方法 查询信息列表");
  // platformInfoId = AppContext.getProperties("platformInfoId");
  // Personnel personnel = (Personnel) getSession().getAttribute("personnel");
  // entity.setPersonnel(personnel);
  // try {
  // Long enterpriseId = (Long) getSession().getAttribute("enterpriseId");
  // Long columnId = entity.getColumnId();
  //
  // InfoColumn ic = null;
  // if (columnId != null && columnId.longValue() != 0) {
  // ic = columnService.get(columnId);
  // }
  // if (ic != null && ic.getIsCommon() != null && ic.getIsCommon().equals(OAConstant.IS_COMMON)) {
  // iscommon = OAConstant.IS_COMMON;
  // entity.setIssueStatus(OAConstant.iSISSUE);
  // } else {
  // if (informationmanager != null && !informationmanager.equals("no")) {
  // entity.setIssueStatus(OAConstant.iSISSUE);
  // }
  // entity.setEnterpriseId(enterpriseId);
  // }
  // if (ic == null) {
  // if (informationmanager != null && !informationmanager.equals("no")) {
  // entity.setIssueStatus(OAConstant.iSISSUE);
  // }
  // page = service.queryAllAndCommon(entity, page);
  // // 计算每条信息的浏览次数
  // if (page.getResult() != null && page.getResult().size() != 0) {
  // for (int i = 0; i < page.getResult().size(); i++) {
  // Information information = page.getResult().get(i);
  // Long infoId = information.getInfoId();
  // Long viewCount = informationExtService.queryViewCountByInfoId(infoId);
  // page.getResult().get(i).setViewCount(viewCount);
  // }
  // }
  // } else {
  // entity.setColumnId(ic.getColumnId());
  // page = service.queryAll(entity, page);
  // // 计算每条信息的浏览次数
  // if (page.getResult() != null && page.getResult().size() != 0) {
  // for (int i = 0; i < page.getResult().size(); i++) {
  // Information information = page.getResult().get(i);
  // Long infoId = information.getInfoId();
  // Long viewCount = informationExtService.queryViewCountByInfoId(infoId);
  // page.getResult().get(i).setViewCount(viewCount);
  // }
  // }
  // }
  // try {
  // Print2databaselog.print(personnel, OAConstant.MODULE_INFORMATION, OAConstant.ACTION_SEARCH,
  // personnel.getName() + "查询公告列表", new Date() + "", AppContext.getProperties("oabiz"));
  // } catch (UnknownHostException e) {
  // logger.error("<错误>:后台查询栏目列表出错" + e);
  // }
  // } catch (Exception e) {
  // logger.error("<错误>:", e);
  // }
  // }

  /**
   * 跳转到公告信息页面 建立日期 : Apr 23, 2013 5:41:50 PM<br>
   * 作者 : 王阿敏<br>
   * 
   * @return
   */
  public String information() {
    logger.debug("<进入>:information方法");
    return "information";
  }

  // /**
  // * 跳转到新建或修改公告页面 建立日期 : Apr 18, 2013 5:41:50 PM<br>
  // * 作者 : wangamin<br>
  // *
  // * @return
  // */
  // public String show() {
  // logger.debug("<进入>:show方法");
  // HttpSession session = getSession();
  // HttpServletRequest request = getRequest();
  // String personnelId = RoleWraperImpl.getUserid(request);
  // Long enterpriseId = (Long) session.getAttribute("enterpriseId");
  //
  // entity.setEnterpriseId(enterpriseId);
  // if (entity.getInfoId() != null) {
  // entity = service.get(entity.getInfoId());;
  // voteedit = entity.getCanVote();
  // }
  // if (vote != null && vote.getInfoId() != null) {
  // votes = infoVoteItemService.queryVotes(vote);
  // }
  // rs = columnService.queryAll(entity.getEnterpriseId(), ifSee);
  // for (int i = 0; i < rs.size(); i++) {
  // InfoColumn ifc = rs.get(i);
  // if (ifc.getIsCommon() != null && ifc.getIsCommon().equals(OAConstant.IS_COMMON)) {
  // rs.remove(ifc);
  // i--;
  // }
  // }
  // // zhangyong 发布的数据权限
  // PersonnelModuleAuthorityView personnelModuleAuthorityView = new PersonnelModuleAuthorityView();
  // personnelModuleAuthorityView.setPersonnelId(Long.valueOf(personnelId));
  // personnelModuleAuthorityView.setModuleId(PersonnelModuleAuthority.MODULE_INFO);
  // personnelModuleAuthorityView.setEnterpriseId(enterpriseId);
  // authorityMap = personnelModuleAuthorityService
  // .getAuthorityMapByPersonnelIdAndModuleId(personnelModuleAuthorityView);
  // return "input";
  // }

  // /**
  // * 异步获取信息发布的数据权限
  // *
  // * @author zhangyong
  // * @date 2014-11-18 上午12:01:49
  // */
  // public void getAuthority() {
  // logger.debug("<进入>:getAuthority方法");
  // HttpSession session = getSession();
  // HttpServletRequest request = getRequest();
  // String personnelId = RoleWraperImpl.getUserid(request);
  // Long enterpriseId = (Long) session.getAttribute("enterpriseId");
  // // zhangyong 发布的数据权限
  // PersonnelModuleAuthorityView personnelModuleAuthorityView = new PersonnelModuleAuthorityView();
  // personnelModuleAuthorityView.setPersonnelId(Long.valueOf(personnelId));
  // personnelModuleAuthorityView.setModuleId(PersonnelModuleAuthority.MODULE_INFO);
  // personnelModuleAuthorityView.setEnterpriseId(enterpriseId);
  // authorityMap = personnelModuleAuthorityService
  // .getAuthorityMapByPersonnelIdAndModuleId(personnelModuleAuthorityView);
  // json = com.alibaba.fastjson.JSON.toJSONString(authorityMap);
  // try {
  // writeJson(json);
  // } catch (IOException e) {
  // logger.error("<错误>:异步获取信息发布的数据权限出错" + e);
  // }
  // }

  // /**
  // * 新建或修改公告 建立日期 : Apr 24, 2013 5:41:50 PM<br>
  // * 作者 : wangamin<br>
  // *
  // * @return
  // */
  // public String saveUpdateInfo() {
  // logger.debug("<进入>:saveUpdateInfo方法 新建或修改公告");
  // try {
  // Long enterpriseId = (Long) getSession().getAttribute("enterpriseId");
  // Personnel p = (Personnel) getSession().getAttribute("personnel");
  // String content = entity.getInfoContent();
  // content = content.replaceAll("~", "%");
  // logger.info("把~符号改为%号后的内容" + content);
  // content = URLDecoder.decode(content, "UTF-8");
  // String content_ = content.replaceAll("\\^", "\'");
  // content_ = content_.replaceAll("\\﹪", "\\%");
  // entity.setInfoContent(content_);
  // if (entity.getInfoId() == null) {
  // entity.setCreateUserId(p.getPersonnelId());
  // entity.setCreateUser(p.getName());
  // entity.setEnterpriseId(enterpriseId);
  // entity.setCreateTime(new Date());
  // entity.setVoteStatus(OAConstant.VOTESTATUSIN);
  // service.saveOrUpdate(entity);
  // try {
  // Print2databaselog.print(p, OAConstant.MODULE_INFORMATION, OAConstant.ACTION_ADD,
  // p.getName() + ",新增公告,公告名称：" + entity.getInfoTitle(), new Date() + "",
  // AppContext.getProperties("oabiz"));
  // } catch (UnknownHostException e) {
  // logger.error("<错误>:后台添加公告出错" + e);
  // }
  //
  // if (StringUtils.isNotBlank(entity.getCanVote())) {
  // String[] optionNameStrings = vote.getOptionName().split(",");
  // for (int i = 0; i < optionNameStrings.length; i++) {
  // InfoVoteItem item = new InfoVoteItem();
  // item.setInfoId(entity.getInfoId());
  // item.setOptionName(optionNameStrings[i].trim());
  // infoVoteItemService.save(item);
  // }
  // }
  //
  // } else {
  // entity.setUpdateUser(p.getName());
  // entity.setUpdateTime(new Date());
  // service.save(entity);
  // try {
  // Print2databaselog.print(p, OAConstant.MODULE_INFORMATION, OAConstant.ACTION_UPDATE,
  // p.getName() + ",修改公告,公告名称：" + entity.getInfoTitle(), new Date() + "",
  // AppContext.getProperties("oabiz"));
  // } catch (UnknownHostException e) {
  // logger.error("<错误>:后台修改公告出错" + e);
  // }
  // if (voteIds != null) {
  // String[] optionNameStrings = vote.getOptionName().split(",");
  // for (int i = 0; i < voteIds.length; i++) {
  // InfoVoteItem voteitem = new InfoVoteItem();
  // if (StringUtils.isNotBlank(voteIds[i])) {
  // voteitem.setVoteItemId(Long.valueOf(voteIds[i]));
  // }
  // voteitem.setOptionName(optionNameStrings[i].trim());
  // voteitem.setInfoId(entity.getInfoId());
  // infoVoteItemService.save(voteitem);
  // }
  // } /*
  // * else{ if(optionNameStrings!=null){ for(int i=0;i<optionNameStrings.length;i++){
  // * voteitem.setOptionName(optionNameStrings[i].trim());
  // * voteitem.setInfoId(entity.getInfoId()); voteitem.setVoteItemId(null);
  // * infoVoteItemService.save(voteitem); } } }
  // */
  //
  // // 删除投票选项信息
  // if (StringUtils.isBlank(entity.getCanVote())) {
  // infoVoteItemService.deleteByInfoId(entity.getInfoId());
  // }
  // if (StringUtils.isNotBlank(voteitemids)) {
  // infoVoteItemService.deleteByVoteItemIds(voteitemids);
  // }
  // }
  // } catch (Exception e) {
  // logger.error("<错误>:信息公告新建或修改错误", e);
  // }
  // return "save";
  // }

  // /**
  // * 删除公告 建立日期 : Apr 19, 2014 5:00:24 PM<br>
  // * 作者 : 王阿敏<br>
  // *
  // * @param stringIds
  // */
  // public String deleteById() {
  // logger.debug("<进入>:deleteById方法 删除公告");
  // Personnel p = (Personnel) getSession().getAttribute("personnel");
  // String[] stringIdss = stringIds.split(",");
  // for (int i = 0; i < stringIdss.length; i++) {
  // Long infoId = Long.valueOf(stringIdss[i]);
  // Information info = service.get(infoId);
  // try {
  // Print2databaselog.print(p, OAConstant.MODULE_POST, OAConstant.ACTION_DELETE,
  // p.getName() + ",删除公告,公告名称:" + info.getInfoTitle(), new Date() + "",
  // AppContext.getProperties("oabiz"));
  // } catch (UnknownHostException e) {
  // logger.error("<错误>:后台删除公告出错" + e);
  // }
  // service.delete(infoId);
  // }
  // return "save";
  // }

  // /**
  // * 管理员查看公告信息 建立日期 : Apr 26, 2014 5:00:24 PM<br>
  // * 作者 : 王阿敏<br>
  // *
  // * @param stringIds
  // */
  // public String detail() {
  // logger.debug("<进入>:detail方法 查看公告详情");
  // Personnel p = (Personnel) getSession().getAttribute("personnel");
  // // 查看公文信息的同时，向information_ext表中，插入相关信息，用于统计各公文信息的浏览次数；
  // InformationExt informationExt = new InformationExt();
  // informationExt.setInfoId(entity.getInfoId());
  // informationExt.setLookTime(new Date());
  // informationExt.setPersonnelId(p.getPersonnelId());
  // informationExt.setPersonnelName(p.getName());
  // informationExtService.save(informationExt);
  //
  // iview = service.queryDetail(entity);
  // vLview = service.queryVoteItemLogView(entity);
  // voteNumber = infoVoteLogService.queryCount(entity.getInfoId());
  // return "detail";
  // }

  // /**
  // * 跳转到查看、投票、评论页面 建立日期 : Apr 26, 2014 5:00:24 PM<br>
  // * 作者 : 王阿敏<br>
  // *
  // * @param stringIds
  // */
  // public String voteColumn() {
  // logger.debug("<进入>:voteColumn方法");
  // HttpSession session = getSession();
  // try {
  // Personnel p = (Personnel) getSession().getAttribute("personnel");
  // // 查看公文信息的同时，向information_ext表中，插入相关信息，用于统计各公文信息的浏览次数；
  // InformationExt informationExt = new InformationExt();
  // informationExt.setInfoId(entity.getInfoId());
  // informationExt.setLookTime(new Date());
  // informationExt.setPersonnelId(p.getPersonnelId());
  // informationExt.setPersonnelName(p.getName());
  // informationExtService.save(informationExt);
  //
  // entity = service.get(entity.getInfoId());
  // iview = service.queryDetail(entity);
  // vLview = service.queryVoteItemLogView(entity);
  // int i = infoVoteLogService.queryByPId(p.getPersonnelId(), entity.getInfoId());
  // ifvote = String.valueOf(i);
  // voteNumber = infoVoteLogService.queryCount(entity.getInfoId());
  //
  // Long enterpriseId = (Long) session.getAttribute("enterpriseId");
  // AnnexView annexView = new AnnexView();
  // annexView.setParentId(Long.valueOf(entity.getInfoId()));
  // annexView.setEnterpriseId(enterpriseId);
  // annexView.setAnnexType(Long.valueOf(OAConstant.ANNEX_TYPE_INFORM));
  // entity.setCommonAnnexList(commonAnnexService.queryAllByCondition(annexView));
  // } catch (Exception e) {
  // logger.error("<错误>:查询投票信息错误", e);
  // e.printStackTrace();
  // }
  // commentSucces = (String) getSession().getAttribute("commentSucces");
  // if (StringUtils.isNotBlank(commentSucces)) {
  // getSession().removeAttribute("commentSucces");
  // }
  // return "voteColumn";
  // }

  // public String CommontLog() {
  // logger.debug("<进入>:CommontLog方法");
  // iview = service.queryDetail(entity);
  // return "commontLog";
  // }

  // /**
  // * 重新投票 建立日期 : May 10, 2014 5:00:24 PM<br>
  // * 作者 : 王阿敏<br>
  // *
  // * @return
  // */
  // public String reVote() {
  // logger.debug("<进入>:reVote方法");
  // entity.setVoteStatus(OAConstant.VOTESTATUSIN);
  // service.reVote(entity);
  // infoVoteLogService.deleteByInfoId(entity);
  // iview = service.queryDetail(entity);
  // vLview = service.queryVoteItemLogView(entity);
  // return "detail";
  // }
  //
  // /**
  // * 结束投票 建立日期 : May 10, 2014 5:00:24 PM<br>
  // * 作者 : 王阿敏<br>
  // *
  // * @return
  // */
  // public String endVote() {
  // logger.debug("<进入>:endVote方法");
  // entity.setVoteStatus(OAConstant.VOTESTATUSOUT);
  // service.reVote(entity);
  // iview = service.queryDetail(entity);
  // vLview = service.queryVoteItemLogView(entity);
  // return "detail";
  // }

  // /**
  // * 列表页发布 建立日期 : May 20, 2014 5:00:24 PM<br>
  // * 作者 : 王阿敏<br>
  // *
  // * @return
  // */
  // public String issue() {
  // logger.debug("<进入>:issue方法");
  // entity.setIssueStatus(OAConstant.iSISSUE);
  // service.issue(entity);
  // return "save";
  // }
  //
  // /**
  // * 列表页撤销 建立日期 : May 20, 2014 5:00:24 PM<br>
  // * 作者 : 王阿敏<br>
  // *
  // * @return
  // */
  // public String chexiao() {
  // logger.debug("<进入>:chexiao方法");
  // entity.setIssueStatus(OAConstant.NOISSUE);
  // service.chexiao(entity);
  // return "save";
  // }
  //
  // /**
  // * 把新的对象中有值的成员变量的值，赋给旧的对象中
  // */
  // private static void setNewValue(Object orig, Object dest) throws Exception {
  // Field[] destFields = dest.getClass().getDeclaredFields();
  // for (Field field : destFields) {
  // field.setAccessible(true);
  // Object value = field.get(dest);
  // if (value == null)
  // continue;
  // if (value instanceof String && StringUtils.isBlank((String) value))
  // continue;
  // Field origField = orig.getClass().getDeclaredField(field.getName());
  // origField.setAccessible(true);
  // origField.set(orig, value);
  // }
  // }

  // /**
  // * 通过公文中的发布按钮发布公文
  // *
  // * @author 冯晋首
  // * @throws IOException
  // * @date 2014-7-21 下午3:45:33
  // */
  // public void publishOfficialDoc() throws IOException {
  // logger.debug("<进入>:publishOfficialDoc方法");
  // HttpServletRequest request = getRequest();
  // Long enterpriseId = (Long) getSession().getAttribute("enterpriseId");
  // String personnelId = RoleWraperImpl.getUserid(request);
  // Enterprise ent = (Enterprise) getSession().getAttribute("enterprise");
  // Personnel p = (Personnel) getSession().getAttribute("personnel");
  // String infoContent = entity.getInfoContent();
  // String ip = AppContext.getProperties("oaStaticAdd");
  // ip = ip.substring(0, ip.indexOf("/", ip.lastIndexOf(":")));
  // infoContent = "<iframe width='100%' height='" + iframeHeight + "' src='" + ip + "" +
  // infoContent
  // + "' frameBorder='0' scroll='no' > </iframe>";
  // entity.setInfoContent(infoContent);
  // entity.setIssueStatus(OAConstant.iSISSUE);
  // entity.setCreateUserId(p.getPersonnelId());
  // entity.setCreateUser(p.getName());
  // entity.setEnterpriseId(enterpriseId);
  // entity.setCreateTime(new Date());
  // // 通过公文发布的信息不能进行编辑
  // entity.setIfEditor(OAConstant.CannotEditor);
  // HttpServletResponse response = ServletActionContext.getResponse();
  // response.setContentType("text/plain;charset=UTF-8");
  // response.setCharacterEncoding("utf-8");
  // response.setHeader("Charset", "utf-8");
  // response.setHeader("Cache-Control", "no-cache");
  // try {
  // service.saveOrUpdate(entity);
  // response.getWriter().write("success");
  // } catch (Exception e) {
  // logger.error("<错误>:通过公文中的发布按钮发布公文出错", e);
  // e.printStackTrace();
  // response.getWriter().write("fail");
  // }
  //
  // // zhangyong 发布公文时将附件从工作复制 20141105
  // List<WorkAttach> workAttachs = attachmentService.getWorkAttachByWorkId(docWorkId);
  // if (workAttachs != null) {
  // for (WorkAttach work : workAttachs) {
  //
  // try {
  // // 根据服务器的文件保存地址和原文件名创建目录文件全路径
  // String path = AppContext.getProperties("fileUploadPath");
  // String dstPath = "";// 最终保存的路径
  // String rePathAndName;
  // rePathAndName = CommonFileUtil.renameFile(work.getRealName());
  // // 重新命名的路径（包含文件名）
  // String reFileName = "";// 重新命名的文件名
  // String rePath = "";// 重新命名的路径
  // if (rePathAndName.lastIndexOf("/") != -1) {
  // reFileName = rePathAndName.substring(rePathAndName.lastIndexOf("/") + 1);
  // rePath = rePathAndName.substring(0, rePathAndName.lastIndexOf("/") + 1);
  // }
  //
  // String p_ = mainUploadPath + path + "/" + ent.getEnterpriseNumber() + "/"
  // + OAConstant.ANNEX_TYPE_INFORM;
  // File f = new File(p_);
  // if (!f.exists())
  // f.mkdirs();
  // path = path + "/" + ent.getEnterpriseNumber() + "/" + OAConstant.ANNEX_TYPE_INFORM + "/"
  // + rePath;
  // File fileHome = new File(path);
  // if (!fileHome.exists()) {
  // fileHome.mkdirs();
  // }
  // dstPath = path + reFileName;
  //
  // CopyFileUtil.copyFile(work.getNowFullName(), dstPath, true);
  //
  // // 保存附件
  // CommonAnnex annex = new CommonAnnex();
  // annex.setAnnexName(reFileName);
  // annex.setAnnexOldName(work.getRealName());
  // annex.setAnnexPath(path);
  // annex.setAnnexType(Long.valueOf(OAConstant.ANNEX_TYPE_INFORM));
  // annex.setParentId(entity.getInfoId());
  // annex.setVersion("");
  // annex.setUploadDate(new Date());
  // annex.setUploadPer("");
  // annex.setEnterpriseId(enterpriseId);
  // annex.setPersonnelId(Long.valueOf(personnelId));
  // commonAnnexService.saveOrUpdate(annex);
  //
  // } catch (Exception e) {
  // logger.error("<错误>:通过公文中的发布按钮发布公文过程中保存附件出错", e);
  // e.printStackTrace();
  // }
  // }
  // }
  // }

  // 删除条目数据
  public String deleteVoteItem() {
    try {
      if (StringUtils.isNotBlank(id)) {
        logger.debug("<进入>:删除条目数据方法");
        logger.debug("<入参>:条目{}", id);
        Long itemId = NumberUtils.toLong(id);
        infoVoteItemService.delete(itemId);
        setResult(SUCCESS, "删除成功！");
        LogUtil.log("信息管理", LogUtil.ACTION_UPDATE, LogUtil.RESULT_SUCCESS, "删除投票条目信息");
      }
    } catch (Exception e) {
      LogUtil.log("信息管理", LogUtil.ACTION_UPDATE, LogUtil.RESULT_FAIL, "删除投票条目信息");
      logger.error("<错误>:删除条目异常{}", e);
    }
    return JSON;
  }

  public String getIds() {
    return ids;
  }

  public void setIds(String ids) {
    this.ids = ids;
  }

  public String getTreeNodes() {
    return treeNodes;
  }

  public void setTreeNodes(String treeNodes) {
    this.treeNodes = treeNodes;
  }

  public String getPid() {
    return pid;
  }

  public void setPid(String pid) {
    this.pid = pid;
  }

  public String getSearchName() {
    return searchName;
  }

  public void setSearchName(String searchName) {
    this.searchName = searchName;
  }

  public String getIfSee() {
    return ifSee;
  }

  public void setIfSee(String ifSee) {
    this.ifSee = ifSee;
  }

  public List<InformationView> getViewList() {
    return viewList;
  }

  public void setViewList(List<InformationView> viewList) {
    this.viewList = viewList;
  }

  public Long getColumnId() {
    return columnId;
  }

  public void setColumnId(Long columnId) {
    this.columnId = columnId;
  }

  public Long getInfoId() {
    return infoId;
  }

  public void setInfoId(Long infoId) {
    this.infoId = infoId;
  }

  public String getInfoType() {
    return infoType;
  }

  public void setInfoType(String infoType) {
    this.infoType = infoType;
  }

  public String getInfoTitle() {
    return infoTitle;
  }

  public void setInfoTitle(String infoTitle) {
    this.infoTitle = infoTitle;
  }

  public String getIssueStatus() {
    return issueStatus;
  }

  public void setIssueStatus(String issueStatus) {
    this.issueStatus = issueStatus;
  }

  public String getReadStatus() {
    return readStatus;
  }

  public void setReadStatus(String readStatus) {
    this.readStatus = readStatus;
  }

  public List<InfoColumn> getDicInfoColumns() {
    return dicInfoColumns;
  }

  public void setDicInfoColumns(List<InfoColumn> dicInfoColumns) {
    this.dicInfoColumns = dicInfoColumns;
  }

  public InfoColumn getBelongInfoColumn() {
    return belongInfoColumn;
  }

  public void setBelongInfoColumn(InfoColumn belongInfoColumn) {
    this.belongInfoColumn = belongInfoColumn;
  }

  public InformationView getView() {
    return view;
  }

  public void setView(InformationView view) {
    this.view = view;
  }

  public String[] getDicvTexts() {
    return dicvTexts;
  }

  public void setDicvTexts(String[] dicvTexts) {
    this.dicvTexts = dicvTexts;
  }

  public String[] getDicValues() {
    return dicValues;
  }

  public void setDicValues(String[] dicValues) {
    this.dicValues = dicValues;
  }

  public String[] getDicvIds() {
    return dicvIds;
  }

  public void setDicvIds(String[] dicvIds) {
    this.dicvIds = dicvIds;
  }

  public Boolean getPerIfVote() {
    return perIfVote;
  }

  public void setPerIfVote(Boolean perIfVote) {
    this.perIfVote = perIfVote;
  }
}
